package inventario.code;

/**
 * Projeto Laboratorio de Programacao II
 * 
 * Classe Administrador
 * 
 * Implementa uma Pessoa do Tipo Administrador, com nome, email, login e senha.
 * 
 * @authors : Pedro Augusto, Rafael Ribeiro, Talita Lobo
 * 
 */

public class Administrador extends Usuario {

	/**
	 * 
	 * @param nome
	 *            Nome do administrador
	 * @param email
	 *            Email do administrador
	 * @throws Exception
	 *             Relanca Excecao de pessoa, caso algum dos atributos sejam
	 *             invalidos. (Ver classe Pessoa).
	 */

	public Administrador(String nome, String email, TipoDeUsuario tipo,
			String login, String senha) throws Exception {
		super(nome, email, TipoDeUsuario.ADMINISTRADOR, login, senha);

		this.login = login;
		this.senha = senha;
	}


	/**
	 * Modifica a Senha do Administrador.
	 * 
	 * @param senha
	 *            Senha a ser usada pelo Administrador.
	 * @throws Exception
	 *             Caso a Senha Informada Seja Invalida.
	 */
	public void setSenha(String senha) throws Exception {

		if (senha == null || senha.trim().equals("")) {
			throw new Exception("Senha Invalida ");
		}

		this.senha = senha;

	}

	/**
	 * Recupera a Senha do Administrador.
	 * 
	 * @return senha Senha do Administrador.
	 */

	public String getSenha() {
		return senha;
	}

	public TipoDeUsuario getTipoDeUsuario() {
		return TipoDeUsuario.ADMINISTRADOR;
	}

	/**
	 * Recupera o Login do Administrador
	 * 
	 * @return login Login do Administrador.
	 */
	public String getLogin() {
		return login;

	}

	public boolean Equals(Object obj) {
		if (!(obj instanceof Administrador)) {
			return false;
		}
		Administrador admin = (Administrador) obj;

		return getNome().equals(admin.getNome())
				&& getEmail().equals(admin.getEmail())
				&& getTipoUsuario().equals(admin.getTipoUsuario())
				&& getSenha().equals(admin.getSenha())
				&& getLogin().equals(admin.getLogin());
	}

}